package com.hvgroup.modules.sanic.constants;

import lombok.experimental.UtilityClass;

import java.util.Map;

/**
 * @migratedFrom Python
 * @source constants/dify_rest_api.py
 * @originalClass DiFyRestApi
 * @description DiFy 接口定义与 URL 构建工具类
 */
@UtilityClass // Lombok 自动生成 static 工具类结构
public class DiFyRestApi {

    /** 对话接口 */
    public static final String DIFY_REST_CHAT = "/v1/chat-messages";

    /** 对话反馈接口 */
    public static final String DIFY_REST_FEEDBACK = "/v1/messages/:message_id/feedbacks";

    /** 获取下一轮建议问题列表 */
    public static final String DIFY_REST_SUGGESTED = "/v1/messages/:message_id/suggested";

    /**
     * 从环境变量中读取配置项
     *
     * @param name 环境变量名
     * @return 环境变量值
     */
    public static String getEnv(String name) {
        String value = System.getenv(name);
        if (value == null || value.isEmpty()) {
            throw new IllegalStateException(name + " is not set");
        }
        return value;
    }

    /**
     * 构建完整请求地址
     *
     * @param apiPath 接口路径
     * @return 完整 URL
     */
    public static String buildUrl(String apiPath) {
        String baseUrl = getEnv("DIFY_SERVER_URL");
        return baseUrl + apiPath;
    }

    /**
     * 替换路径参数并生成完整 URL
     *
     * @param apiPath    含占位符的路径（如 /v1/messages/:id）
     * @param pathParams 替换参数 map（如 {"id": 123}）
     * @return 替换后的完整 URL
     */
    public static String replacePathParams(String apiPath, Map<String, Object> pathParams) {
        for (Map.Entry<String, Object> entry : pathParams.entrySet()) {
            String placeholder = ":" + entry.getKey();
            if (apiPath.contains(placeholder)) {
                apiPath = apiPath.replace(placeholder, entry.getValue().toString());
            }
        }
        return apiPath;
    }
}
